/**
 * Cliente.java 
 * Clase que respresenta a un cliente registrado en la base de datos.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 */
package ocio.beans;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
 * Clase que respresenta una oferta que publica un proveedor sobre un producto.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 * @see ocio.beans.Producto
 * @see ocio.beans.Proveedor 
 */
public class Oferta implements Serializable {
	
	private static final long serialVersionUID = 1L;
	private int id;
	private String nombre;
	private int plazasDisp;
	private int plazasReserv;
	private Date fechaLim;
	private double precioXpersona;
	private String descripcion;
	private Producto producto;
	private Set<Reserva> reservas = new HashSet<Reserva>(0);

	/**
	 * Constructor de Clase.	
	 */
	public Oferta(){
	}
	
	 /**
	 * Método getter.         
	 * @return id Devuelve el identificador único en base de datos de de la oferta.
	 */ 
	public int getId() {
		return id;
	}
	
	/**
	 * Método setter.         
	 * @param id Asigna a la oferta un identificador único para la base de datos.
	 */ 
	public void setId(int id) {
		this.id = id;
	}
	
	 /**
	 * Método getter.         
	 * @return nombre Devuelve el nombre de la oferta.
	 */ 
	public String getNombre() {
		return nombre;
	}
	
	/**
	 * Método setter.         
	 * @param nombre Establece el nombre de la oferta.
	 */ 
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	 /**
	 * Método getter.         
	 * @return plazasDisp Devuelve el número de plazas ofertadas por el proveedor para la oferta.
	 */ 	
	public int getPlazasDisp() {
		return plazasDisp;
	}
	
	/**
	 * Método setter.         
	 * @param plazasDisp Establece el número de plazas ofertadas por el proveedor para la oferta.
	 */ 	
	public void setPlazasDisp(int plazasDisp) {
		this.plazasDisp = plazasDisp;
	}
	
	 /**
	 * Método getter.         
	 * @return plazasReserv Devuelve el número de reservadas para la oferta.
	 */ 
	public int getPlazasReserv() {
		return plazasReserv;
	}
	
	/**
	 * Método setter.         
	 * @param plazasReserv Establece el número de plazas reservadas para la oferta.
	 */ 
	public void setPlazasReserv(int plazasReserv) {
		this.plazasReserv = plazasReserv;
	}
	
	 /**
	 * Método getter.         
	 * @return fechaLim Devuelve la fecha hasta la que está disponible la oferta.
	 */ 
	public Date getFechaLim() {
		return fechaLim;
	}
	
	/**
	 * Método setter.         
	 * @param fechaLim Establece la fecha hasta la que está disponible la oferta.
	 */ 
	public void setFechaLim(Date fechaLim) {
		this.fechaLim = fechaLim;
	}
	
	 /**
	 * Método getter.         
	 * @return precioXPersona Devuelve el coste por persona que tiene la oferta.
	 */ 
	public double getPrecioXpersona() {
		return precioXpersona;
	}
	
	/**
	 * Método setter.         
	 * @param precioXpersona Establece  el coste por persona que tiene la oferta.
	 */ 
	public void setPrecioXpersona(double precioXpersona) {
		this.precioXpersona = precioXpersona;
	}
	
	 /**
	 * Método getter.         
	 * @return descripcion Devuelve la descripción detallada y condiciones de la oferta.
	 */ 
	public String getDescripcion() {
		return descripcion;
	}
	
	/**
	 * Método setter.         
	 * @param descripcion Establece la descripción detallada y condiciones de la oferta.
	 */ 
	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}
	
	 /**
	 * Método getter.         
	 * @return producto Devuelve el producto al que está asociado la oferta.
	 */ 
	public Producto getProducto() {
		return producto;
	}
	
	/**
	 * Método setter.         
	 * @param producto Establece el producto al que está asociado la oferta.
	 */ 
	public void setProducto(Producto producto) {
		this.producto = producto;
	}
	
	 /**
	 * Método getter.         
	 * @return reservas Devuelve el conjunto de reservas realizadas sobre la oferta.
	 */ 
	public Set<Reserva> getReservas() {
		return reservas;
	}
	
	/**
	 * Método setter.         
	 * @param reservas Establece el conjunto de reservas realizadas sobre la oferta.
	 */ 
	public void setReservas(Set<Reserva> reservas) {
		this.reservas = reservas;
	}


	
	
}
